package com.ruoyi.sys.service.impl;

import java.util.List;
import java.util.Map;

import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.market.constant.RedisKeyConstent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.ruoyi.db.mapper.SmsTemplateMapper;
import com.ruoyi.db.domain.SmsTemplate;
import com.ruoyi.sys.service.ISmsTemplateService;
import com.ruoyi.common.core.text.Convert;

import javax.annotation.Resource;

/**
 * 短信管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-07-27
 */
@DataSource(DataSourceType.SLAVE)
@Service
public class SmsTemplateServiceImpl implements ISmsTemplateService 
{
    @Resource
    private SmsTemplateMapper smsTemplateMapper;
    @Autowired
    RedisTemplate redisTemplate;

    /**
     * 查询短信管理
     * 
     * @param otype 短信管理主键
     * @return 短信管理
     */
    @Override
    public SmsTemplate selectSmsTemplateByOtypeAndPlatfrom(Long otype, String platfrom)
    {
        return smsTemplateMapper.selectSmsTemplateByOtypeAndPlatfrom(otype, platfrom);
    }

    /**
     * 查询短信管理列表
     * 
     * @param smsTemplate 短信管理
     * @return 短信管理
     */
    @Override
    public List<SmsTemplate> selectSmsTemplateList(SmsTemplate smsTemplate)
    {
        return smsTemplateMapper.selectSmsTemplateList(smsTemplate);
    }

    @Override
    public List<Map<String, Object>> selectSmsTemplateListMap(SmsTemplate smsTemplate)
    {
        return smsTemplateMapper.selectSmsTemplateListMap(smsTemplate);
    }

    /**
     * 新增短信管理
     * 
     * @param smsTemplate 短信管理
     * @return 结果
     */
    @Override
    public int insertSmsTemplate(SmsTemplate smsTemplate)
    {
        smsTemplate.setCreateTime(DateUtils.getNowDate());
        return smsTemplateMapper.insertSmsTemplate(smsTemplate);
    }

    /**
     * 修改短信管理
     * 
     * @param smsTemplate 短信管理
     * @return 结果
     */
    @Override
    public int updateSmsTemplate(SmsTemplate smsTemplate)
    {
        return smsTemplateMapper.updateSmsTemplate(smsTemplate);
    }

    /**
     * 批量删除短信管理
     * 
     * @param otypes 需要删除的短信管理主键
     * @return 结果
     */
    @Override
    public int deleteSmsTemplateByOtypes(String otypes)
    {
        return smsTemplateMapper.deleteSmsTemplateByOtypes(Convert.toStrArray(otypes));
    }

    /**
     * 删除短信管理信息
     * 
     * @param otype 短信管理主键
     * @return 结果
     */
    @Override
    public int deleteSmsTemplateByOtype(Long otype)
    {
        return smsTemplateMapper.deleteSmsTemplateByOtype(otype);
    }

    @Override
    public AjaxResult updateSmsTemplateStatus(Long id) {

        SmsTemplate smsTemplate = smsTemplateMapper.selectSmsTemplateById(id);
        int result1 = smsTemplateMapper.updateUnAbleAllInfo(smsTemplate.getOtype(), smsTemplate.getAppCode());

        SmsTemplate updateEntity = new SmsTemplate();
        updateEntity.setId(smsTemplate.getId());
        updateEntity.setStatus(1);
        int result2 = smsTemplateMapper.updateSmsTemplate(updateEntity);

        boolean result = result1>0 && result2>0;
        if (result){
            // 删除缓存
            String redisKey = StrUtil.format(RedisKeyConstent.SMS_TEMPLATE_INFO_KEY, smsTemplate.getOtype(), smsTemplate.getAppCode());
            redisTemplate.delete(redisKey);
        }

        return result?AjaxResult.success():AjaxResult.error();
    }

}
